home *** CD-ROM | disk | FTP | other *** search
- <?xml version="1.0" encoding="UTF-8"?>
- <!--
-
- Authors: Ignacio Casal Quinteiro
- Copyright (C) 2009 Ignacio Casal Quinteiro <icq@gnome.org>
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this library; if not, write to the
- Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- -->
- <language id="prolog" _name="Prolog" version="2.0" _section="Sources">
- <metadata>
- <property name="mimetypes">text/x-prolog</property>
- <property name="globs">*.prolog</property>
- </metadata>
-
- <styles>
- <style id="comment" _name="Comment" map-to="def:comment"/>
- <style id="variable" _name="Variable" map-to="def:type"/>
- <style id="keyword" _name="Keyword" map-to="def:keyword"/>
- <style id="string" _name="String" map-to="def:string"/>
- <style id="number" _name="Number" map-to="def:decimal"/>
- <style id="operator" _name="Operator" map-to="def:operator"/>
- <style id="error" _name="Error" map-to="def:error"/>
- </styles>
-
- <definitions>
-
- <define-regex id="symbolchar">[-!+\\|=:&><]</define-regex>
-
- <context id="line-comment" style-ref="comment" end-at-line-end="true">
- <start>%</start>
- <include>
- <context ref="def:in-comment"/>
- </include>
- </context>
-
- <context id="block-comment" style-ref="comment">
- <start>/\*</start>
- <end>\*/</end>
- <include>
- <context ref="def:in-comment"/>
- </include>
- </context>
-
- <context id="close-comment-outside-comment" style-ref="error">
- <match>\*/(?!\*)</match>
- </context>
-
- <context id="variable" style-ref="variable">
- <match>(_|[A-Z][A-Za-z0-9_]*)</match>
- </context>
-
- <context id="operators" style-ref="operator">
- <prefix>(?<!\%{symbolchar})</prefix>
- <suffix>(?!\%{symbolchar})</suffix>
- <keyword>=</keyword>
- <keyword>==</keyword>
- <keyword>=\\=</keyword>
- <keyword>=:=</keyword>
- <keyword>\|</keyword>
- <keyword><</keyword>
- <keyword>></keyword>
- <keyword>=<</keyword>
- <keyword>>=</keyword>
- <keyword>\\=</keyword>
- <keyword>\\==</keyword>
- <keyword>\\\+</keyword>
- </context>
-
- <context id="special-operators" style-ref="operator">
- <match>([!;]|:\-)</match>
- </context>
-
- <context id="string" style-ref="string" end-at-line-end="true">
- <start>"</start>
- <end>"</end>
- </context>
-
- <context id="string2" style-ref="string" end-at-line-end="true">
- <start>'</start>
- <end>'</end>
- </context>
-
- <context id="number" style-ref="number">
- <match extended="true">
- \b[0-9]+(\.[0-9]+)?\b
- </match>
- </context>
-
- <context id="arith" style-ref="keyword">
- <keyword>mod</keyword>
- <keyword>div</keyword>
- <keyword>abs</keyword>
- <keyword>exp</keyword>
- <keyword>ln</keyword>
- <keyword>log</keyword>
- <keyword>sqrt</keyword>
- <keyword>round</keyword>
- <keyword>trunc</keyword>
- <keyword>val</keyword>
- <keyword>cos</keyword>
- <keyword>sin</keyword>
- <keyword>tan</keyword>
- <keyword>arctan</keyword>
- <keyword>random</keyword>
- <keyword>randominit</keyword>
- </context>
-
- <context id="keyword" style-ref="keyword">
- <keyword>module</keyword>
- <keyword>meta_predicate</keyword>
- <keyword>multifile</keyword>
- <keyword>dynamic</keyword>
- <keyword>abolish</keyword>
- <keyword>current_output</keyword>
- <keyword>peek_code</keyword>
- <keyword>append</keyword>
- <keyword>current_predicate</keyword>
- <keyword>put_byte</keyword>
- <keyword>arg</keyword>
- <keyword>current_prolog_flag</keyword>
- <keyword>put_char</keyword>
- <keyword>asserta</keyword>
- <keyword>assert</keyword>
- <keyword>fail</keyword>
- <keyword>put_code</keyword>
- <keyword>assertz</keyword>
- <keyword>findall</keyword>
- <keyword>read</keyword>
- <keyword>at_end_of_stream</keyword>
- <keyword>float</keyword>
- <keyword>read_term</keyword>
- <keyword>atom</keyword>
- <keyword>flush_output</keyword>
- <keyword>repeat</keyword>
- <keyword>atom_chars</keyword>
- <keyword>functor</keyword>
- <keyword>retract</keyword>
- <keyword>atom_codes</keyword>
- <keyword>get_byte</keyword>
- <keyword>set_input</keyword>
- <keyword>atom_concat</keyword>
- <keyword>get_char</keyword>
- <keyword>set_output</keyword>
- <keyword>atom_length</keyword>
- <keyword>get_code</keyword>
- <keyword>set_prolog_flag</keyword>
- <keyword>atomic</keyword>
- <keyword>halt</keyword>
- <keyword>set_stream_position</keyword>
- <keyword>bagof</keyword>
- <keyword>integer</keyword>
- <keyword>setof</keyword>
- <keyword>call</keyword>
- <keyword>is</keyword>
- <keyword>stream_property</keyword>
- <keyword>catch</keyword>
- <keyword>nl</keyword>
- <keyword>sub_atom</keyword>
- <keyword>char_code</keyword>
- <keyword>nonvar</keyword>
- <keyword>throw</keyword>
- <keyword>char_conversion</keyword>
- <keyword>number</keyword>
- <keyword>clause</keyword>
- <keyword>number_chars</keyword>
- <keyword>unify_with_occurs_check</keyword>
- <keyword>close</keyword>
- <keyword>number_codes</keyword>
- <keyword>var</keyword>
- <keyword>compound</keyword>
- <keyword>once</keyword>
- <keyword>copy_term</keyword>
- <keyword>op</keyword>
- <keyword>write</keyword>
- <keyword>write_canonical</keyword>
- <keyword>write_term</keyword>
- <keyword>writeq</keyword>
- <keyword>current_char_conversion</keyword>
- <keyword>open</keyword>
- <keyword>current_input</keyword>
- <keyword>peek_byte</keyword>
- <keyword>current_op</keyword>
- <keyword>peek_char</keyword>
- <keyword>false</keyword>
- <keyword>true</keyword>
- <keyword>consult</keyword>
- </context>
-
- <context id="prolog">
- <include>
- <context ref="keyword"/>
- <context ref="arith"/>
- <context ref="number"/>
- <context ref="string"/>
- <context ref="string2"/>
- <context ref="special-operators"/>
- <context ref="operators"/>
- <context ref="variable"/>
- <context ref="block-comment"/>
- <context ref="line-comment"/>
- <context ref="close-comment-outside-comment"/>
- </include>
- </context>
-
- </definitions>
- </language>
-